package com.huaweiyuntest.springbootdemo.controller;//package com.trade.testspringboot.controller;
//
//import com.itextpdf.forms.PdfAcroForm;
//import com.itextpdf.forms.fields.PdfFormField;
//import com.itextpdf.kernel.font.PdfFont;
//import com.itextpdf.kernel.font.PdfFontFactory;
//import com.itextpdf.kernel.geom.Rectangle;
//import com.itextpdf.kernel.pdf.PdfDocument;
//import com.itextpdf.kernel.pdf.PdfPage;
//import com.itextpdf.kernel.pdf.PdfReader;
//import com.itextpdf.kernel.pdf.PdfWriter;
//import lombok.Data;
//
//import java.util.ArrayList;
//import java.util.List;
//
//public class pdfTest {
//    public static void main(String[] args) throws Exception {
//        List<item> data = new ArrayList<>();
//        Order orderTest = new Order();
//        for (int i = 0; i < 10; i++) {
//            data.add(new item("col0" + i, "col1" + i, "col2" + i, "col3" + i, "col4" + i, "col5" + i, "col6" + i, "col7" + i, "col8" + i, "col9" + i, "col10" + i, "col11" + i, "col12" + i, "col13" + i, "col14" + i, "col15" + i));
//        }
//        orderTest.setCompany("company");
//        orderTest.setDate("2025-10-10");
//        orderTest.setData(data);
//        generatePdf(orderTest);
//    }
//
//    public static void generatePdf(Order order) throws Exception {
//        String templatePath = "/Users/mac/yangxulong/CE/tmp/国能e商reader-template.pdf";
//        String outputPath = "/Users/mac/yangxulong/CE/tmp/result_1.pdf";
//
//        PdfReader reader = new PdfReader(templatePath);
//        PdfWriter writer = new PdfWriter(outputPath);
//        PdfDocument pdfDoc = new PdfDocument(reader, writer);
//        PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
//
//        PdfFont font = PdfFontFactory.createFont(com.itextpdf.io.font.constants.StandardFonts.HELVETICA);
//
//        PdfFormField datefield = form.getField("date");
//        if (datefield != null) {
//            datefield.setFont(font);
//            datefield.setFontSize(7.5f);
//            datefield.setValue(order.getDate());
//        }
//        PdfFormField companyfield = form.getField("col1");
//        if (companyfield != null) {
//            companyfield.setFont(font);
//            companyfield.setFontSize(6.5f);
//            companyfield.setValue(order.getCompany());
//        }
//
//
//        if (order.getData() != null && !order.getData().isEmpty()) {
//            PdfPage page = pdfDoc.getPage(1);
//            PdfFormField templateField = form.getField("col0");
//            if (templateField != null) {
//                PdfFormField templateRow = getTopLevelField(templateField);
//
//                // 获取模板字段的矩形
//                Rectangle rect = templateField.getWidgets().get(0).getRectangle().toRectangle();
//                float rowHeight = rect.getHeight();
//                float startY = rect.getBottom();
//
//                fillRowData(form, order.getData().get(0), font, 0);
//
////                for (int i = 1; i < order.getData().size(); i++) {
////                    item rowData = order.getData().get(i);
////                    createAndFillRowFields(form, templateRow, page, font, rowData, i, startY - rowHeight * i);
////                }
//            }
//        }
//
//        form.flattenFields();
//        pdfDoc.close();
//        reader.close();
//        writer.close();
//    }
//
//    // 获取顶级表单字段（行）
//    private static PdfFormField getTopLevelField(PdfFormField field) {
//        return field;
////                PdfFormField parent = field.getParent();
////                while (parent != null && parent.getParent() != null) {
////                    parent = parent.getParent();
////                }
////                return parent != null ? parent : field;
//    }
//
//    // 填充行数据
//    private static void fillRowData(PdfAcroForm form, item rowData, PdfFont font, int rowIndex) {
//        String suffix = rowIndex > 0 ? String.valueOf(rowIndex) : "";
//
//        setFormFieldWithFont(form, "col0" + suffix, rowData.getCol0(), font);
//        setFormFieldWithFont(form, "col1" + suffix, rowData.getCol1(), font);
//        setFormFieldWithFont(form, "col2" + suffix, rowData.getCol2(), font);
//        setFormFieldWithFont(form, "col3" + suffix, rowData.getCol3(), font);
//        setFormFieldWithFont(form, "col4" + suffix, rowData.getCol4(), font);
//        setFormFieldWithFont(form, "col5" + suffix, rowData.getCol5(), font);
//        setFormFieldWithFont(form, "col6" + suffix, rowData.getCol6(), font);
//        setFormFieldWithFont(form, "col7" + suffix, rowData.getCol7(), font);
//        setFormFieldWithFont(form, "col8" + suffix, rowData.getCol8(), font);
//        setFormFieldWithFont(form, "col9" + suffix, rowData.getCol9(), font);
//        setFormFieldWithFont(form, "col10" + suffix, rowData.getCol10(), font);
//        setFormFieldWithFont(form, "col11" + suffix, rowData.getCol11(), font);
//        setFormFieldWithFont(form, "col12" + suffix, rowData.getCol12(), font);
//        setFormFieldWithFont(form, "col13" + suffix, rowData.getCol13(), font);
//        setFormFieldWithFont(form, "col14" + suffix, rowData.getCol14(), font);
//        setFormFieldWithFont(form, "col15" + suffix, rowData.getCol15(), font);
//    }
//
//    // 创建并填充新行字段
//    private static void createAndFillRowFields(PdfAcroForm form, PdfFormField templateRow,
//                                               PdfPage page, PdfFont font, item rowData,
//                                               int rowIndex, float newY) {
//        String[] fieldNames = {"col0", "col1", "col2", "col3", "col4", "col5", "col6", "col7", "col8", "col9", "col10", "col11", "col12", "col13", "col14", "col15"};
//        String[] values = {rowData.getCol0(), rowData.getCol1(), rowData.getCol2(), rowData.getCol3(),
//                rowData.getCol4(), rowData.getCol5(), rowData.getCol6(), rowData.getCol7(), rowData.getCol8(), rowData.getCol9(),
//                rowData.getCol10(), rowData.getCol11(), rowData.getCol12(), rowData.getCol13(), rowData.getCol14(), rowData.getCol15()};
//
//        for (int i = 0; i < fieldNames.length; i++) {
//            PdfFormField originalField = findFieldInGroup(templateRow, fieldNames[i], page.getDocument());
//            if (originalField != null) {
//                PdfFormField newField = cloneField(originalField, page, newY, fieldNames[i] + rowIndex);
//
//                form.addField(newField, page);
//
//                newField.setFont(font);
//                newField.setFontSize(12);
//                newField.setValue(values[i] != null ? values[i] : "");
//            }
//        }
//    }
//
//    // 在字段组中查找特定字段
//    private static PdfFormField findFieldInGroup(PdfFormField group, String fieldName, PdfDocument pdfDoc) {
//        if (group.getFieldName() != null && group.getFieldName().toString().equals(fieldName)) {
//            return group;
//        }
//        for (Object kid : group.getKids()) {
//            PdfFormField child;
//            if (kid instanceof PdfFormField) {
//                child = (PdfFormField) kid;
//            } else {
//                child = PdfFormField.makeFormField(
//                        (com.itextpdf.kernel.pdf.PdfDictionary) kid,
//                        pdfDoc
//                );
//            }
//            if (child != null && child.getFieldName() != null && child.getFieldName().toString().equals(fieldName)) {
//                return child;
//            }
//        }
//        return null;
//    }
//
//    // 复制字段并调整位置
//    private static PdfFormField cloneField(PdfFormField originalField, PdfPage page,
//                                           float newY, String newFieldName) {
//        // 这里只能新建一个同类型的字段，不能直接copyTo
//        Rectangle rect = originalField.getWidgets().get(0).getRectangle().toRectangle();
//        float width = rect.getWidth();
//        float height = rect.getHeight();
//        float x = rect.getLeft();
//        Rectangle newRect = new Rectangle(x, newY, width, height);
//
//
//        PdfFormField newField = new com.itextpdf.forms.fields.TextFormFieldBuilder(page.getDocument(), newFieldName)
//                .setWidgetRectangle(newRect)
//                .createText();
//        return newField;
//    }
//
//    // 工具方法：设置表单字段值并指定字体
//    private static void setFormFieldWithFont(PdfAcroForm form, String fieldName, String value, PdfFont font) {
//        PdfFormField field = form.getField(fieldName);
//        if (field != null) {
//            field.setFont(font);
//            field.setFontSize(10.5f);
//            field.setValue(value != null ? value : "");
//        }
//    }
//
//    // 工具方法：设置表单字段值
//    private static void setFormField(PdfAcroForm form, String fieldName, String value) {
//        PdfFormField field = form.getField(fieldName);
//        if (field != null) {
//            field.setValue(value);
//        }
//    }
//
//    @Data
//    static class Order {
//        private String date;
//        private String company;
//        private List<item> data;
//    }
//
//    @Data
//    static class item {
//        public item(String col0, String col1, String col2, String col3, String col4, String col5, String col6, String col7, String col8, String col9, String col10, String col11, String col12, String col13, String col14, String col15) {
//            this.col0 = col0;
//            this.col1 = col1;
//            this.col2 = col2;
//            this.col3 = col3;
//            this.col4 = col4;
//            this.col5 = col5;
//            this.col6 = col6;
//            this.col7 = col7;
//            this.col8 = col8;
//            this.col9 = col9;
//            this.col10 = col10;
//            this.col11 = col11;
//            this.col12 = col12;
//            this.col13 = col13;
//            this.col14 = col14;
//            this.col15 = col15;
//        }
//
//        String col0;
//        String col1;
//        String col2;
//        String col3;
//        String col4;
//        String col5;
//        String col6;
//        String col7;
//        String col8;
//        String col9;
//        String col10;
//        String col11;
//        String col12;
//        String col13;
//        String col14;
//        String col15;
//
//    }
//}